﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


// 신호 타입 : 없음, 매수, 매도, 매수청산, 매도청산, 모두 청산.
public enum GTSignalType { NONE = 0, BUY, SELL, EXITBUY, EXITSELL, EXITALL };

namespace GoodTrader.GTSignal
{
    public class CSignal
    {
        // 신호가 발생한 고정 인덱스 : 봉마다 고유하다. 봉이 한간씩 밀리면 고정 인덱스도 한간씩 밀린다. 
        // 그러나 인덱스가 변해도 고정 인덱스는 값이 절대로 변하지 않는다. 
        // 새로 생긴 봉에는 새로운 고정인덱스 번호가 부여된다.
        private int m_ConstIndex = 0;
        public int ConstIndex
        {
            get { return m_ConstIndex; }
            set { m_ConstIndex = value; }
        }
        // 신호 발생 일일 인덱스 - 틱은 시간으로 구분할 수가 없기 때문에 이것이 반드시 필요하다.
        private int m_DayIndex = 0;
        public int DayIndex
        {
            get { return m_DayIndex; }
            set { m_DayIndex = value; }
        }
        
        // 신호 발생 시간
        private double m_SignalTime = 0.0;
        public double SignalTime
        {
            get { return m_SignalTime; }
            set { m_SignalTime = value; }
        }
        // 신호 타입
        private GTSignalType m_Type = GTSignalType.NONE;
        public GTSignalType Type
        {
            get { return m_Type; }
            set { m_Type = value; }
        }
        // 신호 이름
        private string m_Name = "";
        public string Name
        {
            get { return m_Name; }
            set { m_Name = value; }
        }
        
        public CSignal(string a_Name)
        {
            m_Name = a_Name;
        }
        // 신호가 발생한 가격
        private double m_Price = 0.0;
        public double Price
        {
            get { return m_Price; }
            set { m_Price = value; }
        }

        // 신호 아이디
        private string m_ID = "";
        public string ID
        {
            get { return m_ID; }
            set { m_ID = value; }
        }

        // 주문 개수 - 매수나 매도의 개수
        private int m_Amount = 0;
        public int Amount
        {
            get { return m_Amount; }
            set { m_Amount = value; }
        }
    }
}
